#pragma once
#include "wc3main.h"
#include "wc3collections.h"
#include "wc3agent.h"
#include "wc3_game_state.h"
#include "wc3player.h"
#include "wc3jassvm.h"

procedure wc3game_Init();
void wc3game_main();

class TGameWar3
{
public:
		typedef TGameWar3* PGameWar3;
		static PGameWar3 GetInstance();
public:
		Pointer vtable;
		TScriptHandle hMainScript;
		TInstanceHandle hMainInstance;
		TSGrowableArray<Pointer> Executions;
		PGameState State;
		Pointer Orders;
		Dword GameBuild;
		Word LocalPlayerId;
		Word ReplayPlayerId;
		Dword field2C;
		Pointer MapSetup;
		Pointer FogOfWarMap;
		DWORD jstr_field38;
		DWORD field3C;
		DWORD field40;
		DWORD field44;
		DWORD PlayersCount;
		DWORD field4C;
		DWORD field50;
		DWORD field54;
		PPlayerWar3 Players[16];

public:
		//__declspec (property (get = GetInstance)) PGameWar3 Instance;
};

typedef TGameWar3* PGameWar3;

class TJassFunc : public TAgentWar3
{
public:
	TJassFunctionHandle hCode;
};

